perm filename ITS.PRI[NEW,LSP] blob
sn#490234 filedate 1979-12-25 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00060 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00009 00002
C00010 00003
C00016 00004
C00018 00005
C00020 00006 Introduction to ITS 1
C00024 00007 I. Introduction Introduction to ITS
C00025 00008 Introduction to ITS II. Getting onto the System
C00029 00009 II. Getting onto the System Introduction to ITS
C00030 00010 Introduction to ITS II. Getting onto the System
C00036 00011 II. Getting onto the System Introduction to ITS
C00039 00012 Introduction to ITS II. Getting onto the System
C00043 00013 II. Getting onto the System Introduction to ITS
C00047 00014 Introduction to ITS II. Getting onto the System
C00051 00015 III. DDT Introduction to ITS
C00056 00016 Introduction to ITS III. DDT
C00061 00017 III. DDT Introduction to ITS
C00065 00018 Introduction to ITS III. DDT
C00070 00019 III. DDT Introduction to ITS
C00074 00020 Introduction to ITS III. DDT
C00079 00021 III. DDT Introduction to ITS
C00083 00022 Introduction to ITS III. DDT
C00088 00023 III. DDT Introduction to ITS
C00092 00024 Introduction to ITS III. DDT
C00094 00025 IV. Introduction to and Description of Files Introduction to ITS
C00099 00026 Introduction to ITS IV. Introduction to and Description of Files
C00104 00027 IV. Introduction to and Description of Files Introduction to ITS
C00109 00028 Introduction to ITS IV. Introduction to and Description of Files
C00113 00029 IV. Introduction to and Description of Files Introduction to ITS
C00117 00030 Introduction to ITS IV. Introduction to and Description of Files
C00120 00031 V. TECO Introduction to ITS
C00125 00032 Introduction to ITS V. TECO
C00128 00033 V. TECO Introduction to ITS
C00132 00034 Introduction to ITS V. TECO
C00138 00035 V. TECO Introduction to ITS
C00143 00036 Introduction to ITS V. TECO
C00146 00037 V. TECO Introduction to ITS
C00150 00038 Introduction to ITS V. TECO
C00154 00039 V. TECO Introduction to ITS
C00158 00040 Introduction to ITS VI. Miscellaneous
C00163 00041 VI. Miscellaneous Introduction to ITS
C00168 00042 Introduction to ITS VI. Miscellaneous
C00169 00043 VII. Additional Sources of Information Introduction to ITS
C00173 00044 Introduction to ITS VII. Additional Sources of Information
C00174 00045 VIII. Terminals Introduction to ITS
C00179 00046 Introduction to ITS VIII. Terminals
C00184 00047 VIII. Terminals Introduction to ITS
C00186 00048 Introduction to ITS VIII. Terminals
C00190 00049 VIII. Terminals Introduction to ITS
C00193 00050 Introduction to ITS VIII. Terminals
C00195 00051 VIII. Terminals Introduction to ITS
C00197 00052 Introduction to ITS IX. Possible Problems
C00202 00053 IX. Possible Problems Introduction to ITS
C00208 00054 Introduction to ITS IX. Possible Problems
C00213 00055 IX. Possible Problems Introduction to ITS
C00217 00056 DDT Command Index
C00222 00057 DDT Command Index
C00223 00058 General Index
C00227 00059 General Index
C00228 00060 βββ
C00229 ENDMK
C⊗;
Mathlab Memo #3
Massachusetts Institute of Technology
Mathlab Group
Laboratory for Computer Science
Cambridge, Massachusetts, 02139
An Introduction to ITS for the MACSYMA User
by
Ellen Lewis
revised
February 5, 1979
An Introduction to ITS for the MACSYMA User
Contents
←←←←←←←←
I. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 1
II. Getting onto the System . . . . . . . . . . . . . . . . . . .3
A. Getting an Account . . . . . . . . . . . . . . . . . . . . . 3
B. Establishing a Connection . . . . . . . . . . . . . . . . . .3
C. Logging In . . . . . . . . . . . . . . . . . . . . . . . . . 6
D. Loading a MACSYMA . . . . . . . . . . . . . . . . . . . . . .6
E. Logging Out . . . . . . . . . . . . . . . . . . . . . . . . .7
F. INQUIR . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
G. INIT files . . . . . . . . . . . . . . . . . . . . . . . . . 8
H. Experienced User Login Protocol . . . . . . . . . . . . . . .9
III. DDT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
A. Program Loading and Execution . . . . . . . . . . . . . . . 10
B. "Jobs" . . . . . . . . . . . . . . . . . . . . . . . . . . .11
C. Moving From One Job to the Next . . . . . . . . . . . . . . 12
D. Getting Rid of Jobs . . . . . . . . . . . . . . . . . . . . 12
E. Disowned and Detached Jobs . . . . . . . . . . . . . . . . .13
F. Quit Commands . . . . . . . . . . . . . . . . . . . . . . .13
G. Communication . . . . . . . . . . . . . . . . . . . . . . . 14
H. Messages and Mail . . . . . . . . . . . . . . . . . . . . . 17
I. MACSYM Mail . . . . . . . . . . . . . . . . . . . . . . . . 18
J. Other DDT Commands . . . . . . . . . . . . . . . . . . . . .18
IV. Introduction to and Description of Files . . . . . . . . . .20
A. File Names . . . . . . . . . . . . . . . . . . . . . . . . .20
B. Directories . . . . . . . . . . . . . . . . . . . . . . . . 21
C. File Manipulation: Printing, Copying, Renaming, Deleting . .23
D. FIND. . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
E. Altmode, or Defaults made easy . . . . . . . . . . . . . . .24
V. TECO. . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
A. File Preparation . . . . . . . . . . . . . . . . . . . . . .26
B. Editing Commands . . . . . . . . . . . . . . . . . . . . . .28
C. Filing in Teco . . . . . . . . . . . . . . . . . . . . . . .29
D. TECO Example . . . . . . . . . . . . . . . . . . . . . . . .31
E. Other TECO Facilities . . . . . . . . . . . . . . . . . . . 32
VI. Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . 35
A. NAME. . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
B. WHOIS . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
C. PEEK. . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
D. TIME. . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
VII. Additional Sources of Information . . . . . . . . . . . . . 38
A. Running MACSYMA Demo files. . . . . . . . . . . . . . . . . 38
B. SHARE Directory . . . . . . . . . . . . . . . . . . . . . . 38
C. The INFO Program and further information about the system . 38
VIII. Terminals . . . . . . . . . . . . . . . . . . . . . . . . . 40
A. The TCTYP Program . . . . . . . . . . . . . . . . . . . . . 40
i
B. A Word About Keyboards . . . . . . . . . . . . . . . . . . .41
C. OCTPUS . . . . . . . . . . . . . . . . . . . . . . . . . . .42
D. TIP commands . . . . . . . . . . . . . . . . . . . . . . . .46
IX. Possible Problems . . . . . . . . . . . . . . . . . . . . . 47
A. Problems with your terminal . . . . . . . . . . . . . . . . 47
B. Problems with the system . . . . . . . . . . . . . . . . . .47
C. If Your Typing Appears . . . . . . . . . . . . . . . . . . .47
D. If Your Typing Does Not Appear . . . . . . . . . . . . . . .49
Index of DDT Commands. . . . . . . . . . . . . . . . . . . . . . . . .51
General Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . .53
ii
Acknowledgements
The original outline for this memo was prepared by Richard Bogen.
Corrections and editorial comments were provided by the Mathlab Group.
Work reported herein was supported in part by the Advanced Research
Projects Agency of the Department of Defense and was monitored by the
Office of Naval Research under Contract #N00014-75-C-0661, in part by
the United States Department of Energy under Contract #E(11-1)-3070, and
in part by the National Aeronautics and Space Administration under Grant
NSG 1323.
iii
Introduction to ITS 1
I. Introduction
←←←←←←←←←←←←
The MACSYMA algebraic manipulation system is a collection of
programs embedded in a LISP interpreter. Currently it is implemented on
the Multics operating system which runs on a Honeywell 6180, and on the
Incompatible Timesharing System (ITS) which runs on a PDP-10 known as
the MC machine.
The purpose of this document is to describe how to gain access
to MACSYMA as it exists on the MC PDP-10 at the Laboratory for Computer
Science at M.I.T. and how to interact with the environment in which it
exists, i.e. operating system, monitor, editor, and other programs, so
that successful use can be made of it.
To use MACSYMA effectively you will also need a "Primer" and a
MACSYMA Manual. These may be obtained from:
←←←←←←← ←←←←←←
Laboratory for Computer Science
Publications Department
Room 112
545 Technology Square
Cambridge, MA 02139
There is a $5.00 charge for the manual. The primer and this document
are free, and additional copies may be obtained from:
Secretary, Mathlab Group
Laboratory for Computer Science
Room 836
545 Technology Square
Cambridge, MA 02139
Before continuing we should establish some conventions for notation in
this document.
the character $ will be used to denote the "altmode" (ascii 27 (decimal)
or 33 (octal)), often labelled "escape" or "esc" on terminal
keyboards.
control characters will be denoted by being prefixed by an uparrow, thus
↑Z, ↑A. They are typed by holding down the key marked "control",
"ctrl" or "cntl" on the keyboard as one would the shift key, and
typing the indicated character.
<something> will be used to denote variables in examples of command
lines. Thus
:login <name><carrige return>
1
I. Introduction Introduction to ITS
The entire <name> is to be replaced with whatever login name you
select, e.g.
:login ellen
and the <carriage return> (often shortened to <cr>) indicates the
key labelled "return".
2
Introduction to ITS II. Getting onto the System
II. Getting onto the System
←←←←←←← ←←←← ←←← ←←←←←←
II.A. Getting an Account
To log in to the system you will need a login name and a
password. A login name is any identifier of up to six characters in
length. Most people choose their initials, but any combination of
letters or digits is acceptable, provided (a) the last character is not
a digit, and (b) the particular name is not already being used by
someone else. The INQUIR program will check whether or not your
proposed login name is "taken", and ask you to select another if it is.
The login name you select should be used each time you log in.
A password is any combination of letters and digits up to 12
characters in length. If you do not have a password, then you should
apply for one. The procedure will be started automatically for you when
you first connect to the machine and attempt to log in. Answer the
questions which the Password program asks, and usually within a few
minutes your account will be initialized. If you have any questions or
problems, you may call (617)253-5891 for assistance.
New users who intend to use MACSYMA more than once should run
the INQUIR program (see II.F. below) and answer its questions, giving
their full name, address, position, field of interest, and login name.
The INQUIR program will be started up for you automatically when you log
in the first time after your account has been initialized.
II.B. Establishing a Connection
There are 4 different ways in which one can establish a
connection to the MC computer:
(1) Using a terminal which is directly connected to the machine.
These are on the 8th floor of the Laboratory for Computer
Science at M.I.T.
(2) Using a dialup line, directly connect to the machine.
(3) Dialing the number of a Terminal Interface Processor (or TIP) on
the ARPA Network, and connecting to the machine from there.
(4) Connecting to another computer on the ARPA Network either by a
direct line or a direct dialup line, and running a program on
that computer which makes network connections.
The protocol for (4) will vary widely with the particular
computer you have access to. However, no matter what the protocol you
3
II. Getting onto the System Introduction to ITS
will have to specify either the name of the MC computer, which is MIT-
MC, or its host number, which is 236 decimal, or 354 octal.
The protocols for (2) and (3) are given here:
4
Introduction to ITS II. Getting onto the System
Dialup protocol TIP protocol
1. Make sure your console is set 1. Make sure your console is set
for 30 cps (300 baud), full for 30 cps (300 baud), full
duplex, the parity switch, if duplex, the parity switch, if
there is one, does not there is one, does not
matter. matter.
2. Dial the number of the 2. Dial the number of the Tip.
machine. 3. When you hear the tone place
3. When you hear the tone place the receiver in the acoustic
the receiver in the acoustic coupler headset or press the
coupler headset or press the data button on the dataset
data button on the dataset and hang up the receiver.
and hang up the receiver. 4. Type the appropriate letter
4. Type an E. The response for your console type. For
should be most ascii consoles that
operate at 300 baud, this is
Connected to MC E. Some response will then
be printed.
Now you may proceed with the 5. Type @OPEN 236. (The 236 is
standard login procedure the number of the MC
starting with (2) below. computer.) Most commands to
the TIP begin with @ and are
1
never seen by the MC system.
The response to the @OPEN
command may be any one of the
following:
CANT -this means the line is
already open and the TIP
cannot make the connection.
(Probable reason is the last
user did not close the
connection when he logged
out). Type @CLOSE and then
repeat the @OPEN command
again.
TRYING...-this means the TIP is
attempting to complete the
connection. Wait, and
usually it will be
successful.
OPEN -this means the
connection has been
completed.
REFUSED -this means all
available ports are in use.
Try again later.
Now you may proceed with (2)
below.
←←←←←←←←←←←←←←←
1. If you want to type an @ that
is not the beginning of a TIP
command, then type @@. 5
II. Getting onto the System Introduction to ITS
II.C. Logging In
(1) Type Control-Z. (Control characters are typed by holding down the
key labelled "control" (or "Ctrl") while typing the desired
character. From here on they will be represented in print by being
prefixed with "↑".) After ↑Z is typed the MC system will respond
2
with "MC ITS nnnn DDT mmm" and tell how many users are on.
(2) Type :LOGIN, a space, your login name, and a carriage return. For
example,
:LOGIN JRN
The system will then ask for your password. Type your password
followed by a carriage return.
The system will then print the date and time, and the message
Welcome to ITS
If you have any mail (see III.H), it will be offered to you for reading
and if there are any systems messages you have not seen yet, they will
also be offered.
II.D. Loading a MACSYMA
To load a MACSYMA simply type :MACSYM followed by a carriage
return or :A followed by a carriage return (A is a pseudonym for
MACSYMA). Several seconds later MACSYMA will acknowledge that it is
ready by printing
This is MACSYMA 274
(or whatever the current version is), loading a "fix" file, if any, and
labeling the first input line
(C1)
Now commands (terminated by a semicolon or dollar sign) may be typed to
MACSYMA. (See the MACSYMA manual.)
If you have never used MACSYMA before, you may wish to run the
on-line PRIMER. To do this, give MACSYMA the command
←←←←←←←←←←←←←←←
2. The nnnn and mmm are version numbers for the system and DDT program
respectively, and are useful for connecting bugs with a particular
version.
6
Introduction to ITS II. Getting onto the System
PRIMER();
The "QUIT" command for MACSYMA is ↑G (control-G).
If you need help, you can use the SEND(); command in MACSYMA.
Type
SEND("message");
and message will be sent to the Mathlab group people who are logged in.
One of them will then contact you and help you. Notice the quotation
marks, they are part of the command.
Other on-line HELP commands for MACSYMA are OPTIONS(); and
DESCRIBE(command);. The OPTIONS command enters a network of topics,
which allows you to find the commands which exist in MACSYMA for dealing
3
with certain types of expressions or to perform particular functions.
The DESCRIBE command takes the name of a command and prints out the
4
portion of the manual which describes that command. To see how some
commands work, there is an EXAMPLE(command); command, which runs a demo
file of sample calculations.
II.E. Logging Out
In order to logout you should be at system command level. That
is, you should be talking to DDT (see III. below) and not to MACSYMA or
any other programs. Usually it is only necessary to type a ↑Z to get
back to DDT level. If you are already there then the system prints ??.
To logout from MC, type the command :LOGOUT and a carriage return.
Next, if you are using a TIP, close the connection by typing @C. Then
it is only necessary to hang up the phone and turn off the terminal.
Occasionally, attempting to logout will produce the message
--KILL RUNNING INFERIORS?--. This means that a program you have loaded
is still running. If you do not want the program (i.e. want to kill it
←←←←←←←←←←←←←←←
3. This network is not quite complete, but is being worked on currently.
The command is usable, however, and the areas covered will expand
rapidly.
4. This command gets updated when the manual is updated, however at
times there is a lag in this updating. This will be rectified and
sending messages reporting it is not necessary.
7
II. Getting onto the System Introduction to ITS
5
and logout), respond by hitting the space bar once . If you do not want
to kill the program, you can type :LISTJ (see III.B) to see what is
going on and proceed accordingly.
II.F. INQUIR
The INQUIR program assists us in identifying our users. It will
be started for you automatically the first time you log in. It will
explain itself fairly well; however, please note the following:
You do not need to give your Social Security Number if you would
prefer not to, nor your birthday. To avoid any question you feel is too
prying or does not apply, simply type a carriage return. We do need
your full name and an address, however. You may give your place of work
as "home address" if you wish. Your "Group" is U (MACSYMA User). When
←
you have answered all the questions and it says "What now boss?" You
signify that you are finished by typing
DONE
If you need to update the information in your INQUIR entry you can start
up INQUIR by typing
:INQUIR
(followed by a carriage return, of course). And the system will look up
your entry and allow you to edit it.
II.G. INIT files
It is possible to have a special file which does certain things
when you log in, like give :TCTYP commands for you (see below), or set
the defaults to a particular directory (see Section IV.B on files and
directories), or print out the date and time. Such a file is called an
INIT (INITialization) file. If you have a directory, it is located on
your directory and is called
<login name>;<login name> LOGIN
If you do not have a directory, it is located on your "home directory"
(see IV.A below) and has the name
<directory>;<login name> LOGIN
←←←←←←←←←←←←←←←
5. If you don't know about the program or what this all means, then
probably it is quite safe to type a space.
8
Introduction to ITS II. Getting onto the System
Such a file can eliminate many of the frustrations of logging in,
assuming you always use the same type of console and want the same
things to happen each time. To have one of these files created for you,
contact ELLEN or another member of the Mathlab group. (See III.G and
III.H below).
In addition, there is a special Initialization file for MACSYMA
which will automatically load a MACSYMA for you, and make it unnecessary
for you to have to deal with DDT at all. Its main advantage is that it
handles the reattaching of your jobs for you should your connection get
broken by phone noise or network problems. You may have this INIT
associated with your login name if you wish (it is particularly
recommended for new users). Contact ELLEN to have this done.
II.H. Experienced User Login Protocol
When you have become quite familiar with the login protocol
given above, and know fairly well the material in the DDT section which
follows, you may wish to change slightly the way you log in to the
system. Using :LOGIN sets certain variables within the DDT program
which are intended to protect novice users from accidently destroying
their programs or otherwise doing things they might regret. Once you
are sufficiently familiar with the various commands, and appreciate the
↑K command and the : command for loading programs, you may find it
irritating to be asked each time you use one
--CLOBBER EXISTING JOB?--
or
--CREATE ADDITIONAL JOB?--
with the attendent delays to answer with a space. Well, when you reach
this point, you are ready to graduate to the "experienced user" login
protocol which is
<login name>$U
$ represents the character altmode (or escape, ascii 27 (decimal), 33
(octal)). This method of logging in replaces :LOGIN <login name> and
does not set the variables which protect you from loading excess jobs,
etc. DDT will continue to tell you what the default file names are for
↑O, however.
9
III. DDT Introduction to ITS
III. DDT
←←←
After typing ↑Z you are communicating with a program called DDT
(also called HACTRN) which is the monitor level under ITS that accepts
system commands for performing various functions like program loading,
program control, and copying and printing files. There are two formats
for commands at DDT level; the first is called "Monitor" format, and
this format is what will be meant by the general expression "DDT
command". These commands begin with a colon and are immediately
followed by the mnemonic name of the command with no intervening spaces.
Some commands take arguments, which are separated from the command by a
space. A command ends with a carriage return which causes DDT to begin
execution.
The second format for commands is a short form, consisting of a
single character, possibly prefixed by 1 or 2 altmodes. These short
commands perform the same functions as the corresponding mnemonics.
When short form commands take arguments, these precede the command with
no space between the argument and the command. Altmode, (or escape)
which is ascii 27 (decimal), 33 (octal), will be represented in print by
$. It differs from "control" in that it is not held down, but just
typed. The succeeding command character is not separated from it, e.g.
←←←
$P. On some terminals altmode may not be standard. Right brace, },
(ascii octal 175, or 176) is what you get when you push the key labelled
"altmode" on some of these terminals. The :TCTYP command,
:TCTYP STANDARDIZE tells the system to interpret ascii 175 and 176 as an
altmode.
A few short form DDT commands are control-characters.
The short forms are easier to type, of course, but the novice
user is urged to become familiar with the mnemonic DDT commands first.
This permits the simple rule of thumb:
All commands to DDT begin with : and end with carriage return.
←←← ←←←←←←←← ←← ←←← ←←←←← ←←←← ← ←←← ←←← ←←←← ←←←←←←←← ←←←←←←
III.A. Program Loading and Execution
One way to load and execute programs has already been mentioned,
e.g. :MACSYM. That is, colon followed by the program name and a
carriage return. This is consistent with the rule of thumb for DDT
commands. There is, however, another way to load programs which is
frequently preferable: type the program name followed by ↑K, e.g.
MACSYM↑K. The reason this is preferable is that ↑K causes the
replacement of any existing program you may have loaded called MACSYM
1
with a new MACSYMA. :MACSYM will load a second MACSYMA, if you have
←←←←←←
←←←←←←←←←←←←←←←
1. However, DDT may first ask you if you are sure this is what you want
to do by typing --CLOBBER EXISTING JOB?--. You answer yes by typing a
10
Introduction to ITS III. DDT
2
one already. In those rare circumstances where two copies of a program
are necessary, use the colon-type command, or better yet, load one with
MACSYM↑K and the other with A↑K (and expect to be questioned about it by
a systems programmer at M.I.T.).
To exit from a program, type ↑Z. This will bring you back up to
DDT level. For the remainder of this section it will be assumed that
you are at DDT level, so if you wish to issue one of these commands and
are not at DDT level, first type ↑Z to get up to DDT, and then type the
←←←
command. If you are not sure what level you are at, type ↑Z. If you
were already at DDT level, the system will respond ?? and if you were
not, you will be brought up to DDT and an interrupt message of some kind
will appear, usually [DDT] (but if you were in a TECO under your MACSYMA
it might say "(Console connected to MACSYMA)", in which case you would
need still another ↑Z to get to DDT).
To re-enter a program, type :CONTIN. $P is a short, easier form
for this.
When you exit from a program, it stops running. If you want to
have a program resume running while you remain at DDT level, type
:PROCEED after ↑Z. ↑P is the short form for this.
III.B. "Jobs"
The programs running "under" your DDT are referred to as "jobs".
It is possible to have more than one job and to move from one job to
another, leaving the first (a long computation in MACSYMA, for instance)
to run while you do something else. DDT will permit you to have up to
eight jobs at one time, but since the system can only accomodate about
seventy jobs for all users (including the systems jobs), it is not
recommended to have more than two or three. (Your DDT is one job, so as
soon as you load a MACSYMA you have two jobs, your "top level" DDT and
one "inferior"). When you have more than one job under your DDT, it is
necessary to be able to tell which job is the "current" one, so that if
you type :CONTIN or $P you will be "in" it. To see a list of the jobs
you own at any given time, type :LISTJ (the short form is $$V). This
will give a list of all your jobs, with the current one marked by an *.
Each job will be followed by its status, R for running, P for stopped
but "proceedable", or W for waiting to print out something on the
console. The status will be followed by the index number for that job,
which is a unique number assigned to the job by the system. For
example:
*TECO P 14
←←←←←←←←←←←←←←←
space. Typing anything else will "flush" the command, so if you did not
mean to replace your MACSYMA, you get a second chance.
2. But since you rarely want to do this, DDT will ask --CREATE
ADDITIONAL JOB?--, and you reply space for yes, anything else for no.
11
III. DDT Introduction to ITS
MACSYM R 23
III.C. Moving From One Job to the Next
To move from one job to the next, i.e. to make another job the
current job, type :JOB. The system will then tell you which job is then
current by responding, for example, MACSYM$J. Typing a sequence of
:JOB's will cause each job to become the current job, in turn. An
alternative to this shuffling through all your jobs to get to the
desired one is to type :JOB followed by a space and the name of the
desired job, e.g.
:JOB MACSYM
This will cause the job with this name to become the current one. The
short form of this command is $J, preceded by the job name to specify a
particular job, e.g. MACSYM$J. Notice that :JOB only selects the
current job; you still must type :CONTINUE to enter it. Warning: if
you misspell the name of the job, :JOB will create a new job which you
←←←
3
will have to kill.
There is a shorthand for :JOB followed by :CONTINUE. That is to
4
type the name of the job you wish to re-enter followed by ↑H , e.g.
MACSYM↑H.
If you have left a job running with :PROCEED, it will inform you
when it is ready to print out by sending you a message, e.g. JOB MACSYM
WANTS THE TTY. It will then wait for you to exit whatever job you are
in, and enter it using ↑H or :JOB and :CONTINUE.
III.D. Getting Rid of Jobs
To dispose of a job that you no longer want, the command :KILL
is used. This kills the current job, so obviously care should be taken
to assure that the job you want to KILL is the current job. (:LISTJ
←←
will help you). After a :KILL command, DDT will inform you which job is
then current. For example if you just :KILLed your TECO, DDT will
select your MACSYMA (or whatever the next job is) and print
MACSYM$J
←←←←←←←←←←←←←←←
3. DDT will type "!" when a new job is created, as a warning.
4. ↑H is "backspace"
12
Introduction to ITS III. DDT
III.E. Disowned and Detached Jobs
Occasionally it may be necessary to logout in order to switch
terminals, or to permit someone else to use your terminal, but you may
have a job you do not want to lose, or which hasn't finished running.
The thing to do is to detach yourself, or to disown the job. There is a
difference between these two. Disowning a job is to merely "cut" it
loose from your DDT while you are logged in. It can be thought of then
as floating loose in the system. To do it, exit from the job with ↑Z,
then type :DISOWN (If you want to leave it running, type :PROCEED before
:DISOWN). If you log out while a job is disowned, it will wait for you
(for a reasonable length of time) to log back in and reclaim it. To
reclaim it use the :JOB command followed by the job name. The system
will respond by typing
:$ REOWNED $
and it will then be reconnected to your DDT, and you can reenter it with
:CONTINUE. Disowning running jobs is inconsiderate, however. If a
disowned job wants to print out, it will not be able to and will just
stop. This defeats the purpose of its existence and takes up a job slot
in the system. What this means is you should only disown running jobs
when it is absolutely necessary.
Detaching affects the entire DDT and all the jobs connected to
it. Typing :DETACH will log you out of the system but leave your DDT
and all your jobs sitting there. When you log back in, (assuming the
system has not crashed in the interim) you will receive the message
--ATTACH YOUR DETACHED JOB-- and should answer this by typing a space
as explained in section IX.D, below. When you log back in after
disowning a job, you will not receive a message, but the continued
existence of your job can be confirmed by using :PEEK (see Section
VI.C), and you can then reclaim it with :JOB.
III.F. Quit Commands
There are three Quit commands for DDT, ↑D , ↑S, and ↑G. These
three have different functions. ↑D will abort a command that you have
not completed typing. This is useful if the wrong command was selected,
or a typing error has been made. DDT will print "XXX?" and you may then
retype the command. ↑G will stop the execution of a command. DDT
responds with "QUIT?" and execution stops. This is a "panic button"
type of command, and will stop infinite loops. ↑S will stop the
printout which results from the execution of a command, e.g. the listing
of a directory. ↑G is also the "quit" command for MACSYMA and TECO.
However, when using any "quit" command, at DDT level or inside a
program, it should be noted that due to network delay typing a "quit"
command from a TIP will not cause instant cessation of execution; rather
it may take several seconds (or even minutes) before the quit command
takes effect. It should also be noted that a TIP has a limited number
13
III. DDT Introduction to ITS
of bits to hold its "interrupt" character, so although it may seem
psychologically satisfying to type a long string of ↑G's, they overflow
(and clear) the interrupt bit, actually cancelling each other out.
III.G. Communication
A very useful aid to a MACSYMA user is the ability to
communicate on-line and receive assistance in this fashion. This is the
best way to get help with specific MACSYMA problems, because a MACSYMA
Programmer at MIT can have access to your current MACSYMA and examine
your expressions. He (or she) can also use your console remotely to
demonstrate various solutions for you.
There are two ways to communicate: one-way communication, using
the command :SEND, and two-way communication in which the user links his
terminal to that of another user and the typing of either one appears on
both. A list of people who can answer questions for you is available.
Type
:PRINT ALJABR;MACSYM HELP
Of course, to communicate with someone, he must be logged in.
To determine who is logged in at any given time, type :USERS and a list
of the current users will be printed out. Alternatively, :NAME can be
used, which is described in section VI.A, below.
To send a one-way message to another user, type :SEND followed
by a space and the login name of the person to whom the message is being
sent. Then type the message. It may be more than one line long. End
it with ↑C. For example:
:SEND JPG HOW DO I GET MACSYMA TO
INVERT A MATRIX?↑C
This will result in a message on JPG's terminal that says
[MESSAGE FROM <login name> at <machine name><time>]
HOW DO I GET MACSYMA TO
INVERT A MATRIX?
:SEND can also be used to send messages to people who are not logged in.
In this case, DDT will add (MAIL) either after the login name or at the
end of the message and the message will be saved as MAIL until the user
logs in (see H. below). To explicitly send someone mail (whether or not
they are logged in), :MAIL is used. It has the same format as :SEND
except that the message is saved as MAIL for the addressee.
Often, it is more convenient to interrupt another user and enter
14
Introduction to ITS III. DDT
5
direct two way communication with him. To enter two-way
communication, type ↑←C and the login name of the user you wish to
communicate with. That is control-backarrow, or control-underscore,
followed immediately with a C and then the login name of the user to be
communicated with and a carriage return. On many terminals ↑← will be
control-shift-of-the-letter-O. However, on some terminals the backarrow
or underscore may not have the proper effect when used as control
characters. On some Texas Instrument Silent 700's, for example, the
effect of ↑← is achieved with ↑?. On a CDI Teleterm it is control-shift
of zero. (The octal ascii value for ↑← is 37, decimal 31.) The normal
response by the system to the command is OK, which means your console is
linked to the other user's and the typing on either one appears on both.
To terminate the link type ↑←N. Other responses to ↑←C<login name> may
be QUERYING, meaning the other person is in "Query mode" and may accept
or reject your link (while you wait for him to decide you may simply
wait, type ↑G (bell) to attract his attention, or type ↑←N and try again
later), or IN COMMUNICATE WITH ←←←←, BREAK IN? (to answer that
affirmatively, type Y; negatively, N). The response "?" means that the
person is not logged in, or you spelled his login name wrong.
Two way communication (or communicate mode) may be recognized
when a message appears on your console saying
6
LINK FROM <login name>
A one way (:SEND) message always says
[MESSAGE FROM <login name> at <machine>]
or
TTY MESSAGE FROM <login name>
On printing terminals a one way message will appear only once, but on a
display (CRT) terminal the message may continue to repeat itself if a
job has control of the console (i.e. the user is in a job) since the
output of the job could write over and obliterate the message. This
repetition can be stopped by simply typing ↑Z :CONTIN, i.e. by going up
to DDT level (at which point DDT will print the message one last time)
and then re-entering the job. If DDT has control of the console, the
message will appear only once. Note, if you "lose" a message (because
output from a job obliterates it, or your paper jams), it is not really
←←←←←←←←←←←←←←←
5. When asking for help on complex MACSYMA questions, :SEND is
preferred, since all messages sent by :SEND are saved during the
recipient's console session in a file on the .TEMP.; directory. Thus he
or she will have a record of any pertinent information relative to your
problem. The MACSYMA Programmer will very likely communicate directly
with you, however.
6. Note, although two way communications announce themselves with LINK
FROM, they are in no way related to the :LINK command, which links files
←← ←←←
together.
15
III. DDT Introduction to ITS
lost. All messages sent to you are saved in the file .TEMP.;<login
name> SENDS, and you can read them by printing this file, or simply be
typing (at DDT level)
:PRSENDS
or
↑A
Communications of any sort do not disrupt the job which may be
running, in control of your console. It will resume any print out as
soon as you are finished. Remember, to respond to a one way
communication, you must first be at DDT level (i.e. type ↑Z)
Occasionally you may find you want to print out a long function
or a file and you do not want the printout interrupted by any messages
which might be sent to you. This can be accomplished using the command
:GAG 0
which will inhibit all communications to you. Then print out your
material. After your print out is completed, type
:GAG 17
to reset things. Any messages sent to you during the time you were
"gagged" will be saved as MAIL for you.
If for some reason you do not wish to be bothered by two way
communications from other users, there are commands to control them.
The first is the default, ↑←A, (which stands for "Accept"). It is the
standard state and means that you can be communicated with. The second
is ↑←Q (which stands for "Query"). Typing ↑←Q will set your DDT and
your jobs in a state such that if someone tries to communicate with you,
you will just be told about it. You type ↑←Y to accept communication,
↑←Z to refuse, and ↑←Q to ask who is querying. To reset things to the
standard state, type ↑←A. The third is ↑←R (which stands for "Refuse").
Typing ↑←R at DDT level will cause all communications to be refused.
↑←A resets things. Novice users are advised not to inhibit
communications, since they may accidently cut themselves off from help
thereby.
One other method of communication should also be mentioned. It
is called :SHOUT. As the name implies, it is a message sent to all
currently logged in users. Its syntax is similar to that of :SEND or
:MAIL, except that no login name is specified. A SHOUT can be
recognized because it will contain the word EVERYBODY,
[MESSAGE FROM <login name> EVERYBODY:]
These messages often appear when the system is being used heavily and 1)
16
Introduction to ITS III. DDT
7
all the job slots are in use, or 2) disk space is very low. Obviously,
if you have an extra job you are not using, or three copies of a file
you don't need, heed such a message.
III.H. Messages and Mail
Messages of general interest are sometimes put on the system.
When you log in for the first time the message
TO SEE SYSTEM MESSAGES DO ":MSGS<CR>"
will be printed on the terminal. Once you have typed :MSGS followed by
a carriage return, the system will set up a message date for your login
name. The next time you log in, if there are any new messages, the
system will print --MSGS-- and you have only to type a space to have the
messages displayed (each time it says --MORE--, type space to continue
the display). Typing carriage return will cause the messages to be
"postponed" until the next time. Typing rub-out will cause that message
to be skipped over (i.e. you will never see it). A message is something
sent to the user community at large.
If when you log in the system prints --MAIL-- this means that
there is a private communication just for you, and once again typing
space will cause the mail to be displayed, while typing anything else
will postpone it. To check someone else's mail, for instance to see if
he has seen a message you sent him, type :PRMAIL followed by a space and
the login name of the user whose mail you want to check. Typing :PRMAIL
with your own login name will display your own mail. Typing :PRMAIL
with no login name will also display your own mail. The system will
then offer to delete your mail for you. Typing a space will answer
"yes"; a carriage return will answer "no" (i.e. your mail will be
deleted if you type a space, and saved if you type a carriage return).
8
Note, typing :PRMAIL SKL will not delete SKL's MAIL file.
←←←
There is a program specially designed for reading mail, :RMAIL
(Read MAIL). It will show you one message at a time, permitting you to
delete or save messages selectively, as well as peruse previous mail for
replying or other action. When you exit from it (or should you get
disconnected, log out accidently, or otherwise "screwup") it writes the
file <directory>;<login name> RMAIL, so it is very hard to "lose" mail.
←←←←
←←←←←←←←←←←←←←←
7. :SHOUT should not be used except in such emergency situations, as in
other situations it can be extremely bothersome to other users.
8. The file on the .TEMP.; directory in which all the messages sent to
you with :SEND are saved during your console session is deleted when you
log out. If you wish to re-read these messages before you log out, type
:PRINT .TEMP.;<login name> SENDS, :PRSENDS, or ↑A.
17
III. DDT Introduction to ITS
For more information about it use the :INFO program (section VII.C
below).
III.I. MACSYM Mail
There is a special MAIL file for MACSYMA, in which you may
report bugs, questions, problems, or suggestions for features. To do
this, you type :MAIL MACSYM followed by the message and end it with a
9
↑C, just as for any other :MAIL or :SEND . This file is checked daily
by system programmers. They will answer your questions or attempt to
locate and fix any bugs you report. When bugs are fixed, your report
will be deleted from MACSYMA mail, and mail will be sent to you by the
person who fixes the bug. To read the MACSYMA mail file, type :PRMAIL
MACSYM.
When new features are added to MACSYMA, this will be reported in
the update file. To read this file, type :PRINT MACSYM;UPDATE >.
III.J. Other DDT Commands
A complete list of the DDT commands can be obtained by typing
:?
To respond to questions or messages from DDT of the form
--MESSAGE--
you should type a space for yes, and carriage return or rubout (delete)
for no.
A note about question marks: a ? at DDT level is not a request
← ←←←← ←←←←← ←←←←←←←← ←←←←←
for an answer from the user (things requiring an answer are of the form
--Question?-- as mentioned in the preceding paragraph). The question
mark is a prompt indicating that the machine is waiting for your next
command. A particularly confusing sequence occurs when the system asks
--CLOBBER EXISTING JOB?--
and the user, realizing he wants to type :CONTINUE instead of loading
the job again, hits a carriage return. The system responds
FLUSHED?
←←←←←←←←←←←←←←←
9. You can also use the MAIL("message"); command in MACSYMA.
18
Introduction to ITS III. DDT
which appears to be a question (or perhaps for those of us more
anthropomorphically inclined, an incredulous comment by the system, "You
want that flushed?"). In fact, it is two outputs: the report "FLUSHED"
←←←
refering to the user's request to load a job, and the prompt "?" meaning
"OK, now what?" Another case similar to this is the
--ATTACH YOUR DETACHED TREE--
problem. The "FLUSHED?" in this case is likewise two outputs, and how
to proceed is explained in section IX.D.
19
IV. Introduction to and Description of Files Introduction to ITS
IV. Introduction to and Description of Files
←←←←←←←←←←←← ←← ←←← ←←←←←←←←←←← ←← ←←←←←
A file is simply an area on a particular storage device which
contains data or text. The only storage devices which are used on the
MC machine are disks and tapes.
Files on the disks are figuratively grouped into "directories".
A directory is just a list of all the files stored under a given user
name.
IV.A. File Names
Files in the ITS system possess two names, each of at most 6
characters. They are referenced by giving the two names as well as the
device (default is DSK:) and the directory name where the file resides.
A device is usually a machine name, meaning the disk of that machine.
The device name DSK: is the disk of the machine you are using. Thus on
MC, either DSK: or MC: means MC's disks. A device name is always
followed by a colon. A directory name is always followed by a semi-
colon. Your directory is determined when you login: if you have a
directory of your own, its name will be the same as your login name;
otherwise it is the default specified in your INQUIR entry, if one was
specified; if none was specified, you will be assigned by the system to
a "home directory" called USERSn; where n is a digit from 1 to 5. File
names are up to six characters long and separated by spaces. A > sign
may be used for the second file name and stands for the name which is
the largest numerically if there exists a file with the given first name
and a numeric second name; otherwise the > sign represents the
"greatest" name in an alphanumeric sense. A < sign may be similarly
used for the "least" name. The device (followed by a colon), the
directory name (followed by a semi-colon), and the file names (separated
by a space) may appear anywhere in the file descriptor string. Thus for
example both
INTRO 4 DSK:RAB;
RAB;DSK:INTRO 4
are equivalent descriptions. However, the most usual description is
DSK:RAB;INTRO 4.
Any of the four descriptors (1st name, 2nd name, device, directory) may
be omitted and either the default, or the value given in a previous
command (if there was one given) will be used. Notice that at DDT level
the "usual" way to reference this file is:
DSK:RAB;INTRO 4
while in MACSYMA the two file names are given first and then the device
and directory,
20
Introduction to ITS IV. Introduction to and Description of Files
(INTRO, 4, DSK, RAB).
i.e. (filename1,filename2,device,directory), which corresponds to the
1
DDT ordering: INTRO 4 DSK:RAB;.
IV.B. Directories
A list of all the files on any directory can be seen by typing,
:LISTF followed by a space and the directory name. The short form of
this is the directory name followed by ↑F. A typical directory looks
like this:
MC USERS1;
FREE BLOCKS #0=523 - #1=479 - #13=585
1 AK DATA 2 5/22/78 09:35:24
0 AK LOGIN 1 !12/14/78 08:34:29
L AK1 3 BACKUP TAPE 175
0 BH MAIL 1 10/1/78 14:21:09
0 BQS MATRIX 16 7/3/78 16:48:25
1 CEH F2 10 !12/14/78 11:48:30
13 DUFF A3 6 11/21/78 10:35:15
The top line shows the device (MC is a synonym for DSK, referring to the
MC machine) and the directory name. The next line shows the number of
free blocks (for all users) on each of the three disks. If the numbers
2
are low , it indicates that disk space is short, and you should be
careful about creating files you really do not need. Following this
there will be a line for each file on the directory, with the following
information: The number of the disk on which that file resides (0,1,13),
the two file names of the file (e.g. DUFF A3, or AK LOGIN), the length
of the file in blocks (a "block" is up to 5120 characters, or 1024
words, corresponding to approximately two single spaced typed pages),
and the date and time of creation of the file. Some files will have
BACKUP TAPE, with a number, instead of a creation date. This means that
the file has been transferred to tape (notice that the file above that
is listed as on BACKUP TAPE does not have a disk number, but rather the
letter L), and deleted from the disk. A file on tape can be reloaded
into the system. All files on the disk are copied onto tape (but not
deleted from the disk) regularly, about three times a week. Files that
←←←←←←←←←←←←←←←
1. A new feature in MACSYMA allows you to type DDT style file names in
MACSYMA commands which accept file names, by enclosing them in quotation
marks, and by preceding the ";" with a "\", e.g. LOADFILE("USERS1\;CEH
F2"); or SAVE(["USERS4\;ZHT OUTPUT"],FUNCTIONS);
2. In the case of the MC machine, less than 300 blocks per disk.
21
IV. Introduction to and Description of Files Introduction to ITS
have not been "accessed", i.e. used, as indicated by the date of last
reference (not visible when the directory is listed, but available to
the "Grim File Reaper") for a long time are moved to disk #13, which is
a "secondary" pack. They are still accessible in exactly the same
manner as files on the regular disks, however if a disk drive is not
working, the secondary pack may be demounted until the drive is
repaired, in which case those files on it would not be accessible
temporarily. Files that have not been accessed in a longer period of
time are deleted in "grim file reaps", but only after being dumped on
3
tape. Such a file can be reloaded, if need be (see below). If a file
is accidently deleted, or somehow lost in a system crash, it can often
be recovered from tape. Notice the file above called CEH F2. Just
before the date there is an !. That indicates that the file has not yet
been copied onto tape. Any file that does not have an ! in front of its
date will appear somewhere on tape and if deleted can be reloaded. To
have a file reloaded, it is necessary to communicate with someone in the
Mathlab Group at the Laboratory for Computer Science who is logged in on
the 8th or 9th floors (see VI.A below for how to tell where someone is)
and ask them to reload the file for you. You must specify the directory
and both file names.
The USERSn directory is the default for people who have no
directory of their own or do not have another group directory to use.
When using a USERSn or any other group directory, the first file name of
any file you put there should be your login name. This permits quickly
figuring out what belongs to whom. If you allow MACSYMA to select a
file name for you, it will choose the first 3 characters of your login
name, and append a digit to it (the lowest digit which insures a unique
file name), using > as the second name, e.g. the file AK1 3 above. You
are probably better off specifying names yourself, but you can always
rename the files MACSYMA names for you.
Directories tend to be fairly long. The average group directory
may have something more than 100 files on it. If your login name begins
with a W, you are going to have to watch a lot of paper roll past before
you get to your files if you just use :LISTF. There is another way to
look at just those files with a certain file name (your login name in
this case): type
<login name>$$↑F
and only those files on your default directory with your login name as
first file name will be displayed. That is <login
name><altmode><altmode><control-F>.
←←←←←←←←←←←←←←←
3. Precise time periods vary depending on how heavy the disk usage is.
In general 2 or 3 months is the average lifetime of a file which is not
being used. In any case, these files can still be retrieved.
22
Introduction to ITS IV. Introduction to and Description of Files
IV.C. File Manipulation: Printing, Copying, Renaming, Deleting
Files may be moved from directory to directory, renamed, and
printed out. To move a file from one directory to another, type :COPY
followed by the directory name and the two file names and a carriage
return. The system will prompt with TO: after which the new directory
name should be typed, followed by a carriage return. If no new file
names are designated, the system will assume the default names, i.e. the
same names; however, a new name may be given the file if so desired.
For example: If RAB has files ITS 57, ITS 58, and ITS 59,
:COPY RAB;ITS >
TO:ELLEN;
will copy the file ITS 59 from RAB's directory to ELLEN's directory,
still calling it ITS >. If ELLEN doesn't have a file called ITS, it
will be ITS 1.
:COPY RAB;ITS >
TO:ELLEN;FOO >
will copy the file ITS 59 from RAB's directory to ELLEN's directory,
(without deleting it from RAB's directory) but name it FOO > on ELLEN's
directory. To just rename a file without moving it, type :RENAME
followed by the directory and file names and a carriage return. Once
again, the system will prompt with TO: and the new name should be typed.
To print out a listing of a file, type :PRINT followed by the directory
and the file names and a carriage return. The short form for this is
↑R, which is followed by the directory and file names as usual, e.g.
:PRINT ELLEN;FOO 29
or
↑R ELLEN;FOO 29
Files that are outdated or no longer needed can be deleted, of
course. To do this type :DELETE followed by the directory and the file
names, and a carriage return. A shorter form is ↑O followed by the
directory and file names. Great caution should be used with the ↑O or
:DELETE command, lest you delete a file you didn't intend to. However,
if this should happen, it can sometimes be retrieved from tape as
described above. If you type ↑O by accident, type ↑D to abort it.
IV.D. FIND
Most directories are quite long. On a slow terminal they can
take a long time to list (and a lot of paper). To locate particular
files, without listing an entire directory, there is a program called
FIND. :FIND takes 4 arguments, which are the device, the directory, and
the two file names (the default device is DSK: and the default directory
23
IV. Introduction to and Description of Files Introduction to ITS
is "all directories"). Any of the four arguments may be replaced by *
and FIND will proceed to locate all occurrences of the given
specifications, taking the * as a "wild card" which will match anything.
For example:
:FIND USERS4;SKL *
will find and print on your console all the files on the USERS4
directory that have SKL as their first file name. Similarly:
:FIND SKL *
will find all the files on any directory with SKL as their first file
name, and print out the list on your console. This is another way for
people using a USERSn directory (or any other group directory) to list
just their own files with
:FIND USERSn;<login name> *
Of course, as with any : type command, a carriage return terminates
that.
Type
:FIND ?
to find out about additional features and options of FIND.
IV.E. Altmode, or Defaults made easy
The character altmode can be typed after any of the file
manipulating commands (COPY, PRINT, DELETE, RENAME) and the result will
be that the DDT will print out the default file specification. If, for
instance, you type
:COPY $
DDT might respond, for example:
USERS3;JRN FOO
meaning that USERS3;JRN FOO are the current defaults. If you want to
COPY the file JRN FOO, you just type a carriage return. However, if you
would like to COPY the file USERS3;FOO BAR, you simply type the new file
names, FOO BAR, and then the carriage return. Suppose you wanted to
COPY the file JRN OMAIL, but it was on FOO; not USERS3;. Then you
simply type FOO; and a carriage return. (If you don't want to COPY a
file after all, type ↑D).
Since the device is always followed by a colon, and the
directory name by a semi-colon, there can be no confusion about those
24
Introduction to ITS IV. Introduction to and Description of Files
two. The file names are always separated by spaces, and all that
remains is to be able to designate to DDT whether it is the first or
second file name we wish to change (assuming we are not changing both).
Let us assume that we do not want to COPY USERS3;JRN FOO, but rather
USERS3;JRN 23. The device and the directory are correct, as is the
first file name. We wish to change only the second file name. So we
type
↑X23
Typing ↑X is the same as typing the default first file name; ↑Y,
represents the default second file name. Thus in this case ↑X23 is the
same as JRN 23. If we had typed ↑Y↑X, it would have been the same as
FOO JRN, etc. If you are skeptical (and it is wise to be), you may type
altmode again after you have altered the default file specification, to
check that it is correct, changing it still further if so desired:
:COPY $
DSK:USERS;JRN MAIL
to which you type
↑X23$
to which the DDT responds
DSK:USERS;JRN 23
which is what you want, so you type carriage return.
For certain "dangerous" commands, such as ↑O (the short form for
:DELETE, the file deletion command), DDT supplies an altmode
automatically to be sure you realize what you are doing.
25
V. TECO Introduction to ITS
V. TECO
←←←←
Teco is the text editor. It is useful for preparing batch files
and/or papers. After loading it with TECO↑K or :TECO, you are in a
program that handles text strings and operates on them. You have what
is called a "buffer" into which you insert text. By issuing commands
you can add to or otherwise change the contents of the buffer. By
issuing other commands, you can file the contents of the buffer on the
disk. For papers and reports there are a variety of formatting commands
which can be used to justify the text for output on whatever printing
device you have available. The commands typed do not enter the buffer;
only those characters following the "insert" command go into the buffer.
You can then correct typing, or other errors. For instance, a series of
commands for MACSYMA could be prepared thus, filed on the disk, and
finally loaded into MACSYMA using the BATCH command.
The TECO language itself was originally designed partly as an
editing language and partly as a programming language, so that
repetitive editing programs could be written. When display consoles
became available, special display editing packages were implemented
using the TECO programming language. They are much better than the
original TECO editing language on display consoles, but they work only
marginally on printing consoles. So this documentation will deal
primarily with the original TECO editing language and only in passing
with the display modes (commonly called "Control-R" modes). If you are
going to be using TECO from a display console you should definitely
learn how to use one of these display editing packages and take
advantage of all the capabilities of your console. You can learn about
the most commonly used package on MC by looking at its documentation.
Type
:PRINT EMACS;EMACS CHART
You can try out EMACS or simply by typing
:EMACS
which will start up a TECO for you (which will be have its "job name"
EMACS) using that package. (:E is the short form for this). For a
primer on EMACS, you can type :TEACHE. And more complete infomration
can be gotten in the :INFO program (see section VII.C).
V.A. File Preparation
TECO may be loaded by typing :TECO followed by a carriage
return, or by typing TECO↑K. (:T and T↑K are short forms for these
1
two). In standard TECO the full set of keys on the keyboard is
←←←←←←←←←←←←←←←
1. In MACSYMA it is possible to load a TECO under your MACSYMA by giving
←←←←←
the MACSYMA command TECO();. Similarly EMACS(); starts up an EMACS under
your MACSYMA. In this case, ↑Z will bring you back up to your MACSYMA,
and TECO(); again will return you to TECO.
26
Introduction to ITS V. TECO
available for editing commands. Insertion of text is done by use of the
2
command "I" which takes the following text string as its argument.
Commands in TECO are terminated by two altmodes. The preprocessor
processes the string, handling rubouts, until it encounters an altmode.
It does not begin execution, however until it encounters two altmodes.
Thus, single altmodes may be used within a command string to delimit
Search or Insert strings.
← ←
Your location in the buffer is marked by a pointer, referred to
as "the cursor". Initially its position is at the very top of the
3
buffer. Editing commands can change its position. The Insert command
←
inserts the following text string and leaves the cursor at the end of
←←←
the inserted string. The Search command locates the following string,
←
and leaves the cursor at the end of it. The -S (reverse search) command
←←← ←←
leaves the cursor at the beginning of the sought for string.
←←←←←←←←←
←←←←←←←←←←←←←←←
2. In the special display packages, all the characters are self-
inserting and editing commands are available as "control" characters.
3. On a display console it will appear as /\
27
V. TECO Introduction to ITS
V.B. Editing Commands
A list of the most commonly used editing commands, in regular
mode, follows:
effect of command command
←←←←←← ←← ←←←←←←← ←←←←←←←
advance cursor one line L
go back one line -L
move one character to the right C
move one character to the left -C or R
delete one character D
(the next character after the
cursor)
kill from cursor position to end of K
line (including carriage return
and line feed)
kill from cursor position to end of :K
line (retaining carriage return
and line feed)
kill from cursor position to beginning 0K
of line
move to the beginning of the line 0L
move to the end of the line :L
redisplay screen (on a display terminal) ↑L
move to the top of the buffer J
move to the end of the buffer ZJ
move right one word FWR
move left one word -FWR
kill to the end of the buffer ZK
Commands that take string arguments:
to insert text I
to search forward S
(i.e. over text beyond cursor position)
to search backward -S
(i.e. over text that is before cursor position)
Commands pertaining to printing terminals
to type out the whole buffer HT
to type out the current line 0TT
(without moving the cursor)
to type out the current line 0LT
(moving cursor to beginning of line)
to type out n lines nTT
to automatically type out three lines :3↑N
each time two altmodes are typed
Quit, or cancel command string typed ↑G
(but not executed yet)
28
Introduction to ITS V. TECO
Commands may be prefixed by a numerical argument indicating the
number of repetitions, e.g. 4L would advance the cursor four lines, -4L
would move it up four lines.
The Insert and Search commands take the following string of
← ←
characters, including spaces, carriage returns, and tabs, and insert or
locate them respectively, e.g. Iany string$$ would insert "any string"
into the buffer.
The command :3↑N is a switch (giving it a second time will
reverse the condition). It is given once and has effect for the
duration of the TECO you have loaded (unless you turn it off). Notice
that in spite of beginning with a :, it is a TECO command, not a DDT
←←←
command. It is particularly useful because it prints out the line the
cursor is on and the next two lines, each time two altmodes are typed,
if the cursor is in the middle of the text. The position of the cursor
will be shown by -!-. If the cursor is at the end of the buffer (as in
a file that you are in the process of typing in) the last three buffer
lines will be typed out, and the cursor position will be shown by the
location of the ampersand that is the TECO "ready" symbol.
↑G is a quit command. It will stop an infinite loop (e.g. an
iterative search without proper terminating conditions) or it will flush
an entire command string which you have not yet executed.
There are approximately 400 other Teco commands; the most up-to-
4
date listing of them can be had by printing out DSK:.INFO.;TECORD >.
V.C. Filing in Teco
"Filing" is the process of storing the edited text which is in
your buffer in a disk file where it will stay permanently (until the
file is deleted). If you do not have your own directory, you may use
the USERS directory which is set aside for MACSYMA users who do not have
directories. All the TECO commands that deal with files and filing
begin with E. The ones you will need to deal with are EW, ER, EE, EF,
EY, ET and ED. The specifications for file names have been given
already. By using the > convention you can avoid writing over and
thereby obliterating a previous copy of a file. This is especially
useful if it becomes necessary to return to a previous version to undo
an "improvement" that didn't work out. However, it is "good manners" to
delete extra copies of files before logging out. There is a rule of
←←←←←←←←←←←←←←←
4. Those familiar with the MACSYMA editor will note that it was largely
based on TECO. Note, however, that the commands which cause display and
printout in the MACSYMA editor are quite different from those in TECO,
there are some commands in the MACSYMA editor for insertion of text
which do not exist in TECO, and TECO's commands for manipulation of
parenthesized expressions are entirely different.
29
V. TECO Introduction to ITS
thumb that two copies of the same source file are enough...and the GFR
(Grim File Reaper) will delete all but the two most recent if you don't
do it yourself.
There are two common protocols for filing things from a Teco
buffer. The first is: EW<directory>;$EE<filename1> <filename2>$$. This
files the whole buffer in the specified directory. The second is:
EW<directory>;$HPEF<filename1> <filename2>$$. This files a copy of the
whole buffer in the specified directory but leaves the contents of the
buffer intact. You are at the same location in the buffer you were at
previous to filing and can continue working. On a display terminal,
typing $$ will show you the buffer again.
To "yank" a file from a directory into the buffer, the following
protocol is used: ER<directory>;<filename1> <filename2>$↑Y$$. Note, in
this case ↑ is uparrow (ascii decimal value 94, octal 136), and not
←←←←←←← ←←←
control. Once you have specified a directory name and some file names,
they become the defaults. Unless you want to change them, they can be
omitted from subsequent ER,EW,EE,EF, etc. commands.
To list a directory while you are in TECO, type EY followed by
the directory name and a semi-colon, thus:
EYELLEN;$$
This does not disrupt or modify your buffer; you are still in the same
place ($$ will redisplay the buffer on a display console).
When you are inputting a lot of data, it is advisable to "file"
it away every fifteen minutes or so to minimize the amount of work you
will lose if the system crashes while it is all in your buffer. Using >
as the second file name, you can set up a default file name with the ET
command, thus:
ETUSERS;JRN >$$
Then after you have inserted your data for a few minutes, you can type
EW$HPEF$$, and a copy of what you have just done will be filed on disk
in the USERS directory as JRN 1 (it is recommended that you make the
first file name of a file you place on the USERS directory your login
name; you can then rename it when it is complete to JRN DATA, or
whatever name you find descriptive). Then type $$ and continue
inserting data. This process is repeated until you have completed the
file. Then you can delete all but the largest file, renaming that one
if you wish. Note that it is possible to designate files to be deleted
using < as the second file name, but it is very easy to miscount <'s,
and using the specific file names, (e.g. USERS;JRN 15) is safer.
The :DELETE command is used at DDT level, but it is possible to
delete files while you are in TECO. The ED command followed by the
directory and file names and terminated by two altmodes will do it,
thus:
EDUSERS;JRN 15$$
30
Introduction to ITS V. TECO
(Be sure to do ETJRN >$$ so that your default name doesn't stay "JRN
15").
V.D. TECO Example
Here is an example showing how to create a batch file for
loading into MACSYMA. Everything you would type on your console will be
shown in lower case, at the left margin, thus:
foo
Everything the system responds or types out will be shown indented, in
capital letters, thus:
BAR
Explanatory comments will be shown following a semi-colon, on the line
they explain, thus:
;explanatory comment.
:teco ;load TECO
TECO 445.
*
iexp(2*x)*sin(x)↑2; ;insert a command line
dif(%,x); ;and another one
$$ ;end the Insert command
←
*
-LTT$$ ;go back one line and type it out
DIF(%,X);
*
3c$$ ;move 3 characters to the right
5
if$$ ;insert another f
0tt$$ ;type out the line
DIFF(%,X);
*
←←←←←←←←←←←←←←←
5. Note that the last two commands could have been written together,
thus:
3cif$$
31
V. TECO Introduction to ITS
ht$$ ;type out the entire buffer
EXP(2*X)*SIN(X)↑2;
DIFF(%,X);
*
ewusers;$eejrn de$$ ;file it away as JRN DE on USERS;
V.E. Other TECO Facilities
There are numerous facilities available in the TECO programming
language, but two of the more useful for editing are Q-registers and
Iteration.
Q-registers can be thought of as pigeon holes in which to stick
useful things, much like the numbered holes behind the desk at an old
fashioned hotel. The pigeon holes available to you in TECO are the keys
on your keyboard, that is to say that there are Q-registers 0 through 9
and A thru Z (there are also registers .A through .Z, and ..A through
..Z, but these contain special features of the TECO program itself, or
of special macro packages). You can copy something into a Q-register so
as to be able to insert it repetitively. You can remove a piece of text
from its location, store it in a Q-register, and then insert it
someplace else. You can use Q-registers for various bookkeeping
operations you might want to do (counting the number of lines in a file,
for example). You can use a Q-register to store a macro, such as an
iterative search, which you want to have operate over your entire
buffer, or a portion of your buffer.
There are four basic commands which refer to Q-registers:
X Copy text into Q-register
U Place numeric value into Q-register
G Get the contents of Q-register and insert in buffer
M Execute (Macro) the contents of Q-register
The two commands X and U take arguments of the form
<what>X<where> or <number>U<where>
<where> is the name of a Q-register. <what> may be either of the
following
1. a number of lines (e.g. 3X1 -> copy the next three lines into
Q-register 1)
2. A range of the buffer (e.g. Q2,.X4 -> copy from the point (location)
in Q-register 2 to the current location into Q-register 4)
and the <number> may be either of the following:
32
Introduction to ITS V. TECO
1. an integer (e.g. 0U1 -> put zero into Q-register 1)
2. a location (e.g. .U2 -> put the current location into Q-register 2)
The location of the cursor in the buffer is calculated in characters
from the beginning of the buffer.
The two commands G and M take one argument following them, which is the
name of a Q-register, e.g.
G8
inserts the contents of Q-register 8 in the buffer at the location of
the cursor (leaving the cursor after the inserted text).
←←←←←
M8
executes the command string contained in Q-register 8.
The command Q followed by the name of a Q-register designates a
particular register for other commands, e.g.
Q1= will show you the value in Q-register 1 (a number)
(this does not insert the value in the buffer,
just displays it for you to inspect)
Q1J jump to the location contained in Q-register 1
Q1,. designates a portion of the buffer from the
location in Q-register 1 to the current location
of the cursor (.)
Q1,.X2 copies the specified portion of the buffer
into Q-register 2
The command X may be preceded by an F, e.g. Q1,.FX2, and the text
designated will be copied into the Q-register and deleted from the
buffer. It may also be preceded by ↑, in which case text is appended to
what is already in the Q-register.
Iteration is made possible because TECO is a programming
language. Iterative procedures are enclosed in angle brackets,
<procedure> (notice these are "real" angle brackets, you type them),
which may be preceded by a number to indicate the number of repetitions
(no number specified indicates the procedure is to iterate indefinitely,
beginning at the cursor location, until terminated by the ";" command).
The most commonly used iterative procedure is the iterative
search. The format for an iterative search to change all occurrences of
X+3 to X+2 is
<SX+3$;-DI2$>$$
33
V. TECO Introduction to ITS
Notice the altmodes. The first one terminates the search string, X+3.
The second one terminates the insert string, 2. -D, which deletes the
3, does not need a terminator since it does not take a string argument.
(Notice it is -D since the cursor is at the end of the string X+3, so
←←
the 3 is the character just before the cursor). Finally, notice that
the ";" is not there for punctuation, but is the special TECO character
that says, "if you find no occurrences of the string, exit the
←←←← ←←←
iteration." It provides the terminating condition for the search.
←←←←←←←←←
More examples:
0U1 J<S
$; %1> Q1=$$ zero Q-register 1, then go to the top of
the buffer and search for all occurrences
of <carriage return> and increment the valu
in Q-register 1 each time you find one;
finally display the contents of Q-register
This will count the number of lines in a fi
J .,.XX <SDIFF$; 0L ↑XX L>$$ go to the top of the buffer, and set up
Q-register X, then search for all occurrenc
of DIFF; when you find one go to the beginn
of the line it is on, and append that line
to Q-register X, then go to the next line
to insure you don't keep finding the same
←←←←
6
line with DIFF in it.
This will create a list in Q-register X of
the lines containing DIFF.
←←←←←←←←←←←←←←←
6. Failure to do something like this is a very common "bug" in iterative
procedures, and is one of the easiest ways to produce infinite loops.
34
Introduction to ITS VI. Miscellaneous
VI. Miscellaneous
←←←←←←←←←←←←←
There are several other programs which may be of help to the
MACSYMA user. Two of them, NAME and WHOIS, identify other users. PEEK
permits you to check on your own or someone else's status. And TIME
gives you the current date and time.
VI.A. NAME
NAME is loaded by typing :NAME followed by a carriage return, or
by NAME↑K. It prints out a list of the users currently logged in with
their full names and locations. It also gives the idle time, i.e. the
length of time since the user last did something at his console.
When NAME has completed its printout, it kills itself and
returns you to DDT level.
VI.B. WHOIS
Loading WHOIS has different effects depending upon the way it is
done. Loading it with :WHOIS <carriage return> or WHOIS↑K will produce
the same print out as :NAME, but with additional information about the
users. Loading it with :WHOIS JRN <carriage return> will print out the
identity of the user who uses JRN as his login name. Alternatively,
:WHOIS may be given a full name, and the result will be to provide the
login name of that person. The difference from NAME here is that not
only the full name of the user is given but some other identification,
e.g. MACSYMA user, secretary, graduate student, etc. :WHOIS and
WHOIS↑K give only those users logged in, but by giving a login name to
:WHOIS any user's identity can be determined, whether or not he is
logged in. This is a good way to check if someone already uses the
login name you want to use. A user who is not known to the system will,
of course, not be identified, and the system will print "???" or "No
Users".
WHOIS also kills itself and leaves you at DDT level.
VI.C. PEEK
PEEK permits you to check on your status, or that of other
users. It is loaded by either :PEEK <carriage return> or PEEK↑K (:P and
P↑K are short forms of these two). The printout is a listing of all the
current users with all the jobs that they currently possess and the
status of each job. This printout will update itself every 20 seconds
on a display console, and you may cause it to update itself more
frequently by typing space. On a printing console, the printout is
updated only by explicitly typing a space. You kill PEEK by typing Q.
This will return you to DDT level (but remember that from a TIP, this
may still take a few seconds). There are several modes to PEEK, which
35
VI. Miscellaneous Introduction to ITS
are selected by a series of single letter commands. A listing of these
may be obtained by typing ? at PEEK.
The first two lines give statistics about the system itself.
The third line gives the headings for the information to follow. The
remaining give status information, one line for each job. The number in
the first column is the user index, followed by the login name of the
person, and the name which is currently the default for his DDT. The
next column gives the status of the job; HANG, RUN, WALK, CRAWL, FLY,
PAGE, 10!0 and TTYI and TTYO are the most common. HANG and RUN are
sufficiently descriptive; WALK, CRAWL, and FLY are variants of RUN
1
intended to indicate roughly how your job is doing ; PAGE means the job
is currently waiting its turn in time sharing, and 10!0 means that the
job has been interrupted (usually because you typed ↑Z). TTYI and TTYO
will be next to a job that has control of the console, and mean
"inputting" (or waiting for input) and "outputting" respectively. To
the right of this status indication there will be one of three symbols:
<, >, or Tn. < means that the job has relinquished control of the
console to a "superior" procedure. > means that control is with an
"inferior" procedure. In the majority of cases you will find the >
next to your DDT, and the < next to your MACSYMA. The Tn indicates that
that job has control of the console (a bit of reflection will assure you
that if you are looking at a PEEK, your Tn will be opposite the PEEK
job). The n is the number of the line you are logged in on. The next
two columns give the core units the job is using. The first number is
the total amount of core the job takes, and the second number is the
amount of that that is on the disk. The next column gives the % of time
the job is receiving from the machine. The remaining column gives the
total machine time (CPU time) the job has received. For each user, the
line with his login name represents his DDT. Then under that, indented
slightly, will be a line for each job, with the job name in the first
column, and the directory name that is the current default for that job
in the second column. The status column and the % time are generally
the most useful in determining your status.
On a printing console, running a PEEK when the system is being
used heavily can take a long time. To just see the status of your own
jobs, load PEEK by typing
:PEEK S
This will cause it to display only your jobs. If you have a disowned
job, it will be shown, also, but next to <, >, or Tn, it will say DSN.
←←←←←←←←←←←←←←←
1. There are a few other varients of RUN: MULTIX, TENEX, and perhaps one
or two others. These are actually names of operating systems, and in
PEEK mean "slow"; this is a bit of inter system sniping.
36
Introduction to ITS VI. Miscellaneous
VI.D. TIME
:TIME or TIME↑K will give you a print out of the current time
and date, as well as the length of time the system has been running.
37
VII. Additional Sources of Information Introduction to ITS
VII. Additional Sources of Information
←←←←←←←←←← ←←←←←←← ←← ←←←←←←←←←←←
VII.A. Running MACSYMA Demo files.
It is sometimes useful, as an adjunct to the information in the
MACSYMA Manual, to see how some commands work on sample problems. There
is a directory called DEMO which contains batch files used for giving
demonstrations. These files illustrate the various capabilities of
MACSYMA. You can list the DEMO directory (see IV.B) and then run one of
these files yourself to see how a particular command works, or just to
get an idea of how MACSYMA operates in general.
After you have chosen a file (say it is BEGIN DEMO) you load a
MACSYMA (see II.C) and, after it gives you a command line number, type:
BATCH(BEGIN, DEMO, DSK, DEMO);
or
DEMO(BEGIN, DEMO, DSK, DEMO);
BATCH will cause the file to be run right through without pauses between
command lines. DEMO will cause the system to pause after each command-
display line pair for you to type a space, which will cause it to type
and execute the next command.
VII.B. SHARE Directory
Another directory available to MACSYMA users is the SHARE
directory. As the name implies, it is a directory of routines written
by users which may be useful to other users. There are at least two
files for each routine, one providing documentation on the use of the
routine, and the other containing the actual routine ready for loading
into MACSYMA.
Users are invited to use the files on this directory and to add
to it should they develop some useful routine. The naming conventions
and required file formats are explained in a file on the directory
called -READ- -THIS-. Please heed them.
VII.C. The INFO Program and further information about the system
The :INFO Program contains a variety of information about
programs that run on the system. You can start it up with :INFO or
INFO↑K. It has a self-teaching feature which explains how to use it:
type H the first time you run it and it will enter this self-teaching
routine.
38
Introduction to ITS VII. Additional Sources of Information
A file which is interesting to look at is AI:GLS;JARGON >, which
you can print with the :PRINT command. It is a glossary of some of the
seemingly incomprehensible language some programmers use.
39
VIII. Terminals Introduction to ITS
VIII. Terminals
←←←←←←←←←
VIII.A. The TCTYP Program
ITS tries to identify the type of terminal which the user has in
order to send characters to it in an optimal fashion. However, it is
not always successful in doing this, so sometimes you may have to help
it. If you feel this is the case type the command :TCTYP DESCRIBE
followed by a carriage return. This printout will show the type of
terminal ITS thinks you are using and the characteristics which it
possesses. The possible terminal types are: DATAPOINT, HP2640, OMRON,
TEKTRONIX, VT52, GT40, IMLAC, MEM (memorex), EXECUPORT, TERMINET,
TELETYPE (for 33 and 35 terminals), TISILENT, PRINTING, and a few
others. (See .INFO.;TCTYP ORDER for the complete list.) The
designation PRINTING is used if none of the other types apply.
For example typing :TCTYP TISILENT (followed by a carriage
return) will inform ITS that you have a Texas Instruments Silent 700
terminal. Giving the name of the terminal causes the relevant
parameters to be set to "reasonable values." If these are inadequate,
they can be reset. The command :TCTYP HELP (carriage return) gives a
brief explanation of how to reset them. The principal parameters are
LINEL (line length), PAGESIZE (the number of lines per page or screen),
PADCR, PADLF, and PADTAB (which specify padding for carriage returns,
linefeeds, or tabs respectively). A value of 0 for PADCR and PADLF and
1 for PADTAB means no padding after carriage returns, linefeeds, and
tabs respectively. A value of 0 for PADTAB means the terminal is not to
tab at all. The maximum padding value is 7. (Try small values first).
A numerical value of a parameter should be followed by a period to
indicate decimal base (otherwise it is taken as octal).
ITS does not pad carriage returns or linefeeds unless you
specify it explicitly. TIPs, however, provide what is usually adequate
padding (2 pads for carriage return). If the padding for carriage
returns and line feeds on a terminal being used from a TIP seems
inadequate, it may be improved by resetting the padding value, or by
adding PADDED to its :TCTYP command. For example, a T.I. Silent 700
that is sometimes missing linefeeds may be improved by typing
:TCTYP TISILENT PADDED
This will slow down its input response a bit but will greatly improve
legibility.
A complete description of the :TCTYP program may be found by
typing
:PRINT .INFO.;TCTYP ORDER.
The normal response by the system to any :TCTYP command (except
DESCRIBE and HELP) is
:KILL
40
Introduction to ITS VIII. Terminals
In spite of the bloodthirsty look of this response, it does not destroy
any programs you may have running, but only indicates execution of the
command.
VIII.B. A Word About Keyboards
Unfortunately there is no standard ascii keyboard. There are
many various keyboard layouts, and in some cases certain ascii codes may
not be assigned to the same key on any two keyboards. Included here is
a chart which give the ascii codes in octal and decimal, and the various
printing characters most usually associated with them. These may be
helpful in trying to locate stray control characters on your console.
The keys usually most affected by the whim of the keyboard
designer are the control functions which in this document are called
"control-backarrow" (↑←) and "control-uparrow" (↑↑). The first of these
is particularly useful on ITS for communicating (↑←).
↑← On teletypes, the backarrow is the shift of the letter O, and on all
upper case terminals, this is the first thing to try. The backarrow
on more modern terminals is "underscore", so the key on your
keyboard which would be used to underline may turn out to be the
elusive "backarrow". A few consoles (notably the CDI Teleterm) have
the function of control-underscore on control-shift-zero.
DEC Consoles (Decwriters (LA36), Decscopes (VT50, VT52)). The
←←← ←←←←←←←←
backarrow on these consoles is the underline, which is the shift of
the dash. On the current standard DEC keyboard it is the fifth key
from the right in the top row.
TIsilents. There are two main TI keyboard types. On one of them
←←←←←←←←←
there actually is a key with a backarrow on it in the top row of
keys, and it is the backarrow for "control-backarrow". On the other
control-backarrow is control-question-mark. If the obvious key on
your TI console does not work for control-backarrow, try control-
question-mark. On some TI's the key "US" ("underscore") is the key
to use for control-backarrow.
↑↑ On teletypes the uparrow is the shift of the letter N. On all upper
case terminals that is the first thing to try. In other cases,
there seems to be no particular scheme for what the uparrow is. A
key with an arrow pointing up would be an obvious one to try. Some
keyboards indicate uparrow with a large circumflex or caret.
DEC Consoles. On the current DEC keyboard uparrow is the shift of
←←← ←←←←←←←←
the number 6.
TIsilents. On one of the TI keyboards, the uparrow is the uparrow,
←←←←←←←←←
41
VIII. Terminals Introduction to ITS
and is located in the top row of keys. On the other, the control-
uparrow function is achieved with control-greater-than.
The table of translation of strange control-characters for the
TI silent variant keyboard is given here, in case any other console
types use it:
To get ↑← Type ↑?
↑↑ ↑>
↑] ↑=
↑\ ↑<
VIII.C. OCTPUS
There is a program called :OCTPUS (for OCToPUS) which will give
you the octal value of any character you type from your keyboard. This
will aid you in locating special characters which are eluding you. You
start it with :OCTPUS and type characters at it. ↑Z will offer to
return you to DDT level, at which point it kills itself and leaves you
there.
42
Introduction to ITS VIII. Terminals
ASCIIλλλλλ←←←←← CHARλλλλ←←←← LPT:λλλλ←←←← VALUEλλλλλ←←←←← TRANSλλλλλ←
null 000
control A ↓ 001 vλl down arrow
control B α 002 aλ← alpha
control C (eof) ↑C 003 bλ← beta
control D ∧ 004 ↑ logical and (caret)
control E ¬ 005 } logical not
control F ε 006 eλ← epsilon
control G π 007 nλ- pi
backspace ↑H 010 ↑λ\ lambda
tab ↑I 011
line feed ↑J 012
vertical tab ↑K 013
form feed ↑L 014
carriage return ↑M 015
control N ∞ 016 %λ← infinity
control O ∂ 017 @λo del (partial deriv.)
control P ⊂ 020 (λ← subset of
control Q ⊃ 021 )λ← contains
control R ∩ 022 nλ↑ intersection
control S ∪ 023 Uλ← union
control T ∀ 024 Vλ- for all
control U ∃ 025 Eλ| for some
control V ⊗ 026 Oλ+ exclusive or
control W ↔ 027 <λ> two-way arrow
control X _ 030 ← underbar
control Y → 031 -λ> right arrow
control Z ~ 032 Zλ- control Z (eof)
altmode 033 =λ/ not equal
control shift l ≤ 034 <λ← less or equal
control shift m ≥ 035 >λ← greater or equal
control shift n ≡ 036 =λ← equivalent
control shift o ∨ 037 Vλ← logical or
space 040
exclamation point ! 041
double quote " 042
number sign # 043
dollar sign $ 044
percent sign % 045
ampersand & 046
single quote ' 047
left parenthesis ( 050
right parenthesis ) 051
asterisk * 052
plus sign + 053
comma , 054
minus sign (dash) - 055
period . 056
slash / 057
zero 0 060
one 1 061
two 2 062
three 3 063
43
VIII. Terminals Introduction to ITS
four 4 064
five 5 065
six 6 066
seven 7 067
eight 8 070
nine 9 071
colon : 072
semicolon ; 073
less than sign < 074
equal sign = 075
greater than sign > 076
question mark ? 077
at sign @ 100
capital A A 101
capital B B 102
capital C C 103
capital D D 104
capital E E 105
capital F F 106
capital G G 107
capital H H 110
capital I I 111
capital J J 112
capital K K 113
capital L L 114
capital M M 115
capital N N 116
capital O O 117
capital P P 120
capital Q Q 121
capital R R 122
capital S S 123
capital T T 124
capital U U 125
capital V V 126
capital W W 127
capital X X 130
capital Y Y 131
capital Z Z 132
left bracket [ 133
backslash \ 134
right bracket ] 135
up arrow (caret) ↑ 136 ↑λl up arrow
back " (underbar) ← 137 <λ- back arrow
accent grave ` 140
small a a 141
small b b 142
small c c 143
small d d 144
small e e 145
small f f 146
small g g 147
small h h 150
small i i 151
44
Introduction to ITS VIII. Terminals
small j j 152
small k k 153
small l l 154
small m m 155
small n n 156
small o o 157
small p p 160
small q q 161
small r r 162
small s s 163
small t t 164
small u u 165
small v v 166
small w w 167
small x x 170
small y y 171
small z z 172
left brace { 173
vertical bar | 174
right brace } 175 λ← altmode
logical not } 176 } right brace
rubout 177
βbreak
45
VIII. Terminals Introduction to ITS
VIII.D. TIP commands
Under certain circumstances it may be necessary to give
additional commands to the TIP. Frequently used ones are as follows:
@OPEN <number> Open connection to host whose number is give
@C Close TIP connection.
@D C E Device code extra padding, for terminals with a slow c
@D C A Device code ascii padding, to undo @D C E.
@E R Echo remote, prevents TIP from echoing.
@E A Echo all, allows TIP to echo.
@I L Insert linefeed after carriage returns.
@C I L Clear insert linefeed, nullify @I L
@T E 0 Enters one-character-at-a-time mode
@R Reset
46
Introduction to ITS IX. Possible Problems
IX. Possible Problems
←←←←←←←← ←←←←←←←←
IX.A. Problems with your terminal
If the terminal is printing double or triple then it probably is
in half-duplex mode. If the terminal is capable of working in full
duplex then you should switch it to full duplex. If the terminal must
operate in half-duplex mode then the following procedure must be
performed. Type :TCTYP HALF followed by a carriage return. This will
prevent ITS from echoing (see VIII.A above). A note to people with
separate modems: your modem must also be set to full duplex. So if the
console is set to full duplex and things are still not right, check the
1
modem. If the terminal and modem are in full duplex mode and you are
getting still double printing, a good plan of action is to first type @E
R to cause the TIP to cease echoing, and then type :TCTYP followed by a
carriage return. If the type of terminal ITS thinks it is talking to
does not correspond to the type you have, then the appropriate :TCTYP
command should be selected from section VIII.A. If this fails to
improve the problem, see section VIII above for further suggestions.
If the terminal is apparently skipping characters, the TIP
command @T E 0 may help. This causes the TIP to transmit each character
separately (also slowly).
If your terminal does not line feed when the carriage return key
is struck, you may have to type a line feed after each carriage return.
IX.B. Problems with the system
The problems you may encounter fall into two major categories:
1) your typing appears on the console, but the system either doesn't
respond or it gives you an error message, or 2) your typing does not
appear on the console, or you get a message such as ITS IS DOWN (if you
are on a dialup line) or HOST NOT RESPONDING or HOST DEAD (if you are
using a TIP)
IX.C. If Your Typing Appears
The fact that your typing appears indicates that the system is
still operating, so you should first make sure you know what program you
are in. A simple way to do this is to type ↑Z and then :LISTJ (see
←←←←←←←←←←←←←←←
1. A further anecdote: my own modem has its duplex switch next to the
on/off switch and both are on the back of the modem. I reach around to
←←←←
the back of the modem to turn it off, and every so often I get the wrong
switch, which may not always be apparent until I log in again and suffer
from double echo. Now of course I KNOW that I have my console set to
full duplex... how the mighty are fallen.
47
IX. Possible Problems Introduction to ITS
Section III.B). PEEK may also be used (see Section VI.C). If ↑Z brings
no response, it may be that you are already at DDT level, but your DDT
is hung. Try ↑G to unhang it. Sometimes the system will be heavily
loaded and the response will therefore be slow. Waiting a couple of
minutes and trying ↑G again often works.
A common problem is characterized by the error message JOB?
This means that there is no current job, so the system can not execute
your commands such as :KILL or :CONTIN, which refer to the current job.
You will have no current job, of course, if you have not yet loaded one,
or under certain circumstances following error messages or ↑G's to quit
out of certain commands. If you type :LISTJ you will see something like
this:
MACSYM P 15
*
Notice that the * which should be opposite the current job, is not. (If
you have no jobs, the only print out from :LISTJ will be *, of course).
The solution is once again fairly simple: type :JOB and then retype your
original command.
Misspelling or other typographical errors will, of course, cause
problems. The response ?? at DDT level is not an error message, but
only a response to extra rubouts or extra ↑Z's. It means that DDT is
waiting for you to type the next command. The error message ?U? means
that the system did not understand what you typed and ignored it. The
←←←←←←← ←←
message OP? means that you typed a stray altmode (or one too few) in a
short form command. Sequences of apparently random numbers, e.g.
-137,,2640, are not error messages, but the contents of certain memory
locations which you have accidently opened for inspection. This happens
because DDT is also a debugging language, as well as a monitor for
program control. Certain keys, notably linefeed, uparrow, backarrow,
semi-colon and slash (there are others) are specially interpreted by
DDT. If you type one of these, under certain circumstances it will
print out what appears to be gibberish. This does no harm, but for
everyone's peace of mind do not type sequences of linefeeds to advance
your paper, for example. If you see some of these numbers (and
occasionally assembly language instructions such as MOVEI), just type a
carriage return, which will close the location, making it impossible for
you to accidently "write" anything into a random memory location. After
you have typed the carriage return, you are ready to retype whatever
command you had started before the numbers were printed out.
A syntactically correct but otherwise inoperable "command" (e.g.
one that is misspelled) will produce the message:
DSK:<login name>;TS <command> NON-EXISTENT...
which only means that the system was trying to locate a program called
whatever you typed. Retyping the command is all that need be done in
any of these cases (with due attention to spelling). If, in spite of
care with spelling and syntax, you are still not receiving the response
you expect, refer to section III.G for how to communicate with someone
in the Mathlab group who can help you.
48
Introduction to ITS IX. Possible Problems
If you feel you are hopelessly "lost" there is a program called
LUSER which will send a message requesting help for you. All you have
to do is type :LUSER (followed by a carriage return, of course).
If at any time you happen to receive the error message
DDT BUG, PLEASE DO :BUG DDT ....
it means that DDT has detected a bug in itself. You should tell the
systems programmers exactly what commands you gave, and what DDT's
response was. To do this type
:BUG DDT <your info> ↑C
IX.D. If Your Typing Does Not Appear
If your typing does not appear on your console then either you
got disconnected or the computer has crashed. If the terminal or
dataset is equipped with a light indicating whether the connection is
still in force, check it. You can try typing ↑← (control-backarrow, as
for initiating links) followed by rubout (or delete), and if the system
does not respond ↑←? then it is indeed down.
A TIP or Telnet Server will usually give some message indicating
that the host computer has crashed, e.g., HOST NOT RESPONDING or HOST
DEAD. Wait ten minutes and try to log in again.
If you are on a dialup line, the system may type out ITS IS
DOWN. You need only wait and in ten or fifteen minutes the system will
either print the message MC ITS REVIVED! or the message MC ITS nnnn IN
OPERATION. In the former case, you can continue from where you left
off, and in the latter you must type ↑Z and log in again.
If, when you log back in after such a crash, you receive the
message --ATTACH YOUR DETACHED JOB--, it means that you were not logged
out by the system and can return to your job and continue from where you
were interrupted. The way to do this is very simple; just depress the
←←←← ←←←←←←
space bar once. This will set off a sequence of events which will
result in restoring the "detached job". The following sequence of
statements will be printed:
HACTRO$J! : $ REOWNED $
* :ATTACH
Notice that you do not type any of this; the system does it for you. At
this point you are right back where you were before the interruption.
If you are not sure where you were, type ↑Z and then :LISTJ, as
described in Section III.B, above. Warning: do not type :ATTACH
←←←←←←←
yourself, without being VERY SURE you know what you are doing or you
will regret it!
49
IX. Possible Problems Introduction to ITS
Since network connections can on occasion be somewhat
unreliable, you may sometimes find your connection breaks. When you log
back in under these circumstances, the computer will not have crashed,
and your old jobs will still be there. There are two possibilities:
1. Your jobs were detached and you get the --ATTACH YOUR DETACHED
JOB?--message. In this case proceed as above.
2. When you type :LOGIN <login name>, the system types back <login
name>$0U <login name>$$↑S. This means that while your connection
was broken, you were not detached. At this point you are logged in
twice. To get back to your previous jobs you say
:REATTACH <login name>/K
and your previous jobs will be attached to your current console.
Occasionally when you attempt to answer the --ATTACH YOUR DETACHED JOB?-
-message, you may be unable to type a space, or you might not want to
type a space. You may be unable to type a space if your phone
connection is very noisy and a spurious character is transmitted before
you hit the space bar. You might not want to attach your detached job
immediately if you have an INIT which initializes your line to some
particular terminal type (in that case you want to run your LOGIN INIT
file before recovering your jobs). In any case, having typed (or had
typed for you by the phone line) a <carriage return> or other character,
you will see the message
LEFT DETACHED?
You may still reclaim your old job, however. When you are ready to do
so, proceed as in case 2 above, i.e. type
:REATTACH <login name>/K
If after trying all these things, you are still having trouble do not
hesitiate to contact someone in the Mathlab group.
50
DDT Command Index
Index of DDT Commands
Entries in bold face type refer to most complete explanation.
Command Short form Function
←←←←←←← ←←←←← ←←←← ←←←←←←←←
:? lists DDT commands 18
:A A↑K loads MACSYMA, 6
:CONTIN $P re-enter a job, 11
:CONTINUE re-enter a job, 12, 13
:COPY copies specified file 23
:DELETE ↑O deletes a file 23
:DETACH disconnects but keeps jobs 13
:DISOWN disowns current job 13
:FIND locates files 23
:INQUIR registers Users 8
:JOB $J selects job, 12, 13
:KILL $↑X. kills current job, 12
:LISTF ↑F lists a directory 21
:LISTJ $$V lists your jobs, 11, 47
:LOGIN $U logs you into system, 6
:LOGOUT $$U logs you out of system, 7
:MACSYM MACSYM↑K loads MACSYMA, 6, 10
:MAIL sends mail 14
:MAIL MACSYM sends MACSYMA Mail 18
:NAME NAME↑K loads NAME 35
:P P↑K loads PEEK 35
:PEEK PEEK↑K loads PEEK 35
:PEEK S P↑KS loads PEEK 36
:PRINT ↑R prints out a file 23
:PRMAIL prints out Mail 17
:PRMAIL MACSYM prints out MACSYMA Mail 18
:PROCEED ↑P leaves a job running, 11
:PRSENDS Prints out messages sent to you 16
:RENAME renames a file 23
:SEND sends one-way message 14
:SHOUT sends message to all logged in users 16
:T T↑K loads TECO 26
:TCTYP adjusts line to your console, 40, 47
:TCTYP HELP explains :TCTYP, 40
:TCTYP HALF for half-duplex consoles, 47
:TCTYP STANDARDIZE standardizes altmode, 10
:TECO TECO↑K loads TECO 26
:TIME TIME↑K gives current time 37
:USERS lists current users 14
:WHOIS WHOIS↑K loads WHOIS 35
↑C terminates messages 14
↑D aborts type-in of a command, 13
↑G stops execution of a command, 13
↑H selects and re-enters job 12
↑S stops printout, 13, 13
↑X defaults the first file name 25
↑Y defaults second file name 25
↑Z gets you to system command level 10, 11, 47
51
DDT Command Index
↑←C initiate two-way communication 15
↑←N terminates two way communication 15
52
General Index
Index
<login name>$$↑F 22 INQUIR 3, 8
INQUIR entry 8
account 3 interrupt message 11
altmode 9 ITS IS DOWN 47, 49
Altmode 10
altmode 24 jobs 11
assistance 14
keyboard 41
BACKUP TAPE 21
line length 40
check on your status 35 list a directory 30
Control characters 6 login name 3
control-backarrow 15, 41
control-underscore 15 MACSYMA mail 18
control-uparrow 41 MAIL 14, 17
Manual 1
DATAPOINT 40 Messages 17
DDT commands 10 MIT-MC 4
defaults 24 monitor 10
DEMO directory 38
DESCRIBE(command); 7 NAME 35
dialup line 3, 47, 49
Dialup protocol 5 octal value of any character 42
directories 20, 23, 29 OCTPUS 42
disowned job 13, 36 OMRON 40
on-line PRIMER 6
echoing 47 OPTIONS(); 7
editing commands 28
EMACS 26, 26 PADCR 40
error messages 48 padding 40
escape 10 PADLF 40
EXAMPLE(command); 7 PADTAB 40
EXECUPORT 40 PAGESIZE 40
password 3
Files 20 PEEK 35
Filing 29 Primer 1
FIND 23 PRIMER(); 7
printing double 47
Grim File Reaper 22, 30 PRMAIL 17
GT40 40 problems 47
PRSENDS 16
HACTRN 10
half-duplex mode 47 Query mode 15
HOST DEAD 47, 49 question marks 18
HOST NOT RESPONDING 47, 49 Quit commands 13
host number 4
HP2640 40 REATTACH 50
RMAIL 17
IMLAC 40
INFO 38 SEND(); 7
INIT 8 SENDS 16
53
General Index
SHARE directory 38
SHOUT 16
skipping characters 47
TEACHE 26
TECO 26
TEKTRONIX 40
TELETYPE 40
Terminal Interface Processor 3
terminal types 40
TERMINET 40
TI keyboard 41
TIME 37
TIP 3, 7, 35, 40, 47, 49
TIP protocol 5
TISILENT 40
update file 18
USERSn directory 22, 24
USERS directory 29, 30
VT52 40
WHOIS 35
54
βββ